//package cn.xspace.module.other.activity;
//
//import android.os.Bundle;
//import android.support.annotation.NonNull;
//import android.text.format.Formatter;
//import android.view.View;
//import android.widget.ExpandableListView;
//import android.widget.RelativeLayout;
//import android.widget.TextView;
//
//import com.xspace.android.xafcommon.appliction.BaseAppliction;
//import com.xspace.android.xafcommon.base.BaseActivity;
//import com.xspace.android.xafcommon.util.AppConstant;
//import com.xspace.android.xafcommon.util.CleanUtils;
//import com.xspace.android.xafcommon.util.FileUtils;
//import com.xspace.android.xafcommon.util.PreferencesUtils;
//import com.xspace.android.xafcommon.util.T;
//import com.xspace.android.xafcommon.view.dialog.ButtonClickListener;
//import com.xspace.android.xafcommon.view.dialog.DialogHelp;
//
//import java.io.File;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import cn.xspace.app.view.TitleBar;
//import cn.xspace.library.util.MyInfoUtil;
//import cn.xspace.module.mywork.activity.OfflineDataActivity;
//import cn.xspace.module.mywork.db.ScheduleDBManager;
//import cn.xspace.module.other.R;
//import cn.xspace.module.other.adapter.CleanCacheAdapter;
//import cn.xspace.module.other.base.CleanCacheBean;
//import cn.xspace.wnx.db.WNXDBManager;
//import rx.Observable;
//import rx.Subscriber;
//import rx.android.schedulers.AndroidSchedulers;
//import rx.functions.Action1;
//import rx.schedulers.Schedulers;
//
//public class CacheCleanActivity extends BaseActivity {
//
//    private TitleBar mTitleBar;
//    private RelativeLayout mRelativeCleanAll;
//    private TextView cacheSize;
//    private ExpandableListView mExpandableListView;
//    private CleanCacheAdapter adapter;
//    private List<CleanCacheBean> parentList = new ArrayList<>();
//    private Map<String, List<CleanCacheBean>> childrenList = new HashMap<>();
//    private boolean isCleanAll;
//    private boolean isCleanWNXDB;
//    private boolean isScheduleDB;
//
//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//    }
//
//    @Override
//    protected void initView() {
//        setContentView(R.layout.activity_cache_clean);
//    }
//
//    @Override
//    protected void initFindViewById() {
//        mTitleBar = (TitleBar) findViewById(R.id.clean_cache_title_bar);
//        mRelativeCleanAll = (RelativeLayout) findViewById(R.id.relative_clean_all);
//        cacheSize = (TextView) findViewById(R.id.tv_cache_size);
//        mExpandableListView = (ExpandableListView) findViewById(R.id.expandlv_clean_type);
//    }
//
//    @Override
//    protected void initData() {
//        initSize(); //初始化
//        showWaitDialog();
//        Observable.create(new Observable.OnSubscribe<Boolean>() {
//            @Override
//            public void call(Subscriber<? super Boolean> subscriber) {
//                subscriber.onNext(initList());
//                subscriber.onCompleted();
//            }
//        }).subscribeOn(Schedulers.io())
//                .observeOn(AndroidSchedulers.mainThread())
//                .subscribe(new Action1<Boolean>() {
//                    @Override
//                    public void call(Boolean aBoolean) {
//                        hideWaitDialog();
//                        refreshList();
//                    }
//                });
//    }
//
//    private void refreshList() {
//        if (adapter == null) {
//            adapter = new CleanCacheAdapter(mContext, parentList, childrenList);
//            adapter.setCacheItemClickListener(new CleanCacheAdapter.onCacheItemClickListener() {
//                @Override
//                public void onCacheClick(CleanCacheBean bean) {
//                    if (bean.index == 1) {
//                        showConfirmDialogNoContent(bean);
//                    } else {
//                        showConfirmDialog(bean, false);
//                    }
//                }
//            });
//            mExpandableListView.setAdapter(adapter);
//            for (int i = 0; i < parentList.size(); i++) {
//                mExpandableListView.expandGroup(i);
//            }
//        } else {
//            adapter.notifyDataSetChanged();
//        }
//    }
//
//    private void initSize() {
//        long dirLengthInner = FileUtils.getDirLength(mContext.getCacheDir());
//        long dirLengthSd = FileUtils.getDirLength(new File(AppConstant.APP_DIR));
//        long wnxSize = isCleanAll || isCleanWNXDB ? 0 : FileUtils.getFileLength(String.format(AppConstant
//                .WNX_DB_PATH, MyInfoUtil.getMyMobile(BaseAppliction.mInstance)));
//        long scheduleSize = isCleanAll || isScheduleDB ? 0 : FileUtils.getFileLength(AppConstant.SCHEDULE_DB_PATH);
//        long sum = dirLengthInner + dirLengthSd + wnxSize + scheduleSize;
//        cacheSize.setText(sum > 0 ? Formatter.formatFileSize(mContext, sum) : "0B");
//    }
//
//    private boolean initList() {
//        parentList.clear();
//        childrenList.clear();
//        CleanCacheBean wnxBean = new CleanCacheBean(getString(R.string.clean_wnx_chat_record), getWNXDBSize(), R
//                .drawable
//                .clean_wnx_chat_record, 1);
//        parentList.add(wnxBean);
//        parentList.add(new CleanCacheBean(getString(R.string.clean_my_work_record), getScheduleSize(), R.drawable
//                .clean_my_work_record, 2));
//        parentList.add(new CleanCacheBean(getString(R.string.clean_offline_form), getOffLineFormSize(), R.drawable
//                .clean_offline_form, 3));
//        parentList.add(new CleanCacheBean(getString(R.string.clean_offline_data), getOfflineDataSize(), R.drawable
//                .clean_offline_data, 4));
//        ArrayList<CleanCacheBean> list = getChildList();
//        childrenList.put(getString(R.string.clean_offline_data), list);
//        return true;
//    }
//
//    @NonNull
//    private ArrayList<CleanCacheBean> getChildList() {
//        ArrayList<CleanCacheBean> list = new ArrayList<>();
//        list.add(new CleanCacheBean(getString(R.string.clean_offline_data_zidian), getBiShanSize(), 0, 5));
//        list.add(new CleanCacheBean(getString(R.string.clean_offline_data_chunqiu), getChunQiuSize(), 0, 6));
//        list.add(new CleanCacheBean(getString(R.string.clean_offline_data_shengzhu), getShengZhuSize(), 0, 7));
//        return list;
//    }
//
//    private String getScheduleSize() {
//        if (isCleanAll || isScheduleDB) {
//            return "0B";
//        } else {
//            long fileLength = FileUtils.getFileLength(AppConstant.SCHEDULE_DB_PATH);
//            return fileLength > 0 ? Formatter.formatFileSize(mContext, fileLength) : "0B";
//        }
//    }
//
//    private String getWNXDBSize() {
//        if (isCleanAll || isCleanWNXDB) {
//            return "0B";
//        } else {
//            long fileLength = FileUtils.getFileLength(String.format(AppConstant.WNX_DB_PATH, MyInfoUtil.getMyMobile
//                    (BaseAppliction.mInstance)));
//            return fileLength > 0 ? Formatter.formatFileSize(mContext, fileLength) : "0B";
//        }
//    }
//
//    private String getOffLineFormSize() {
//        long fileLength = FileUtils.getDirLength(AppConstant.OFFLINE_FORM);
//        return fileLength > 0 ? Formatter.formatFileSize(mContext, fileLength) : "0B";
//    }
//
//    private String getOfflineDataSize() {
//        long bishan = FileUtils.getFileLength(AppConstant.BISHAN_DB_PATH);
//        long chunqiu = FileUtils.getFileLength(AppConstant.CHUNQIU_DB_PATH);
//        long shengzhu = FileUtils.getFileLength(AppConstant.SHENGZHU_DB_PATH);
//        long sum = bishan + chunqiu + shengzhu;
//        return sum > 0 ? Formatter.formatFileSize(mContext, sum) : "0B";
//    }
//
//    private String getShengZhuSize() {
//        long fileLength = FileUtils.getFileLength(AppConstant.SHENGZHU_DB_PATH);
//        return fileLength > 0 ? Formatter.formatFileSize(mContext, fileLength) : "0B";
//    }
//
//    private String getChunQiuSize() {
//        long fileLength = FileUtils.getFileLength(AppConstant.CHUNQIU_DB_PATH);
//        return fileLength > 0 ? Formatter.formatFileSize(mContext, fileLength) : "0B";
//    }
//
//    private String getBiShanSize() {
//        long fileLength = FileUtils.getFileLength(AppConstant.BISHAN_DB_PATH);
//        return fileLength > 0 ? Formatter.formatFileSize(mContext, fileLength) : "0B";
//    }
//
//    @Override
//    protected void initEvent() {
//        mTitleBar.setLeftLayoutClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                finish();
//            }
//        });
//        mRelativeCleanAll.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                CleanCacheBean bean = new CleanCacheBean();
//                bean.name = getString(R.string.clean_all_cache2);
//                showConfirmDialog(bean, true);
//            }
//        });
//    }
//
//    private void showConfirmDialogNoContent(final CleanCacheBean bean) {
//        DialogHelp.getConfirmDialogWithoutContent(mContext,
//                String.format(getString(R.string.clean_confirm), bean.name),
//                getString(R.string.think_again_and_again),
//                getString(R.string.button_ok), null, new ButtonClickListener() {
//                    @Override
//                    public void buttonClick(View view) {
//                        showWaitDialog();
//                        Observable.create(new Observable.OnSubscribe<Boolean>() {
//                            @Override
//                            public void call(Subscriber<? super Boolean> subscriber) {
//                                subscriber.onNext(deleteCache(bean, false));
//                                subscriber.onCompleted();
//                            }
//                        }).subscribeOn(Schedulers.io())
//                                .observeOn(AndroidSchedulers.mainThread())
//                                .subscribe(new Subscriber<Boolean>() {
//                                    @Override
//                                    public void onCompleted() {
//
//                                    }
//
//                                    @Override
//                                    public void onError(Throwable e) {
//                                        hideWaitDialog();
//                                        e.printStackTrace();
//                                    }
//
//                                    @Override
//                                    public void onNext(Boolean aBoolean) {
//                                        hideWaitDialog();
//                                        T.showSingleL(String.format(getString(R.string.clean_cache_result), bean
//                                                .name, aBoolean ? getString(R.string.clean_cache_success) : getString
//                                                (R.string.clean_cache_fail)));
//                                        initSize();//清空微农信
//                                        refreshList();
//                                    }
//                                });
//                    }
//                }).show();
//    }
//
//    private void showConfirmDialog(final CleanCacheBean bean, final boolean isAll) {
//        DialogHelp.getConfirmDialog(mContext,
//                String.format(getString(R.string.clean_confirm), bean.name),
//                (isAll ? getString(R.string.clean_confirm_all_content) : String.format(getString(R.string
//                        .clean_confirm_content), bean.name)),
//                getString(R.string.think_again_and_again),
//                getString(R.string.button_ok), null, new ButtonClickListener() {
//                    @Override
//                    public void buttonClick(View view) {
//                        showWaitDialog();
//                        Observable.create(new Observable.OnSubscribe<Boolean>() {
//                            @Override
//                            public void call(Subscriber<? super Boolean> subscriber) {
//                                subscriber.onNext(deleteCache(bean, isAll));
//                                subscriber.onCompleted();
//                            }
//                        }).subscribeOn(Schedulers.io())
//                                .observeOn(AndroidSchedulers.mainThread())
//                                .subscribe(new Subscriber<Boolean>() {
//                                    @Override
//                                    public void onCompleted() {
//
//                                    }
//
//                                    @Override
//                                    public void onError(Throwable e) {
//                                        hideWaitDialog();
//                                        e.printStackTrace();
//                                    }
//
//                                    @Override
//                                    public void onNext(Boolean aBoolean) {
//                                        hideWaitDialog();
//                                        T.showSingleL(String.format(getString(R.string.clean_cache_result), bean
//                                                .name, aBoolean ? getString(R.string.clean_cache_success) : getString
//                                                (R.string.clean_cache_fail)));
//                                        if (isAll) {
//                                            isCleanAll = true;
//                                            initData();
//                                        } else {
//                                            initSize();
//                                            refreshList();
//                                        }
//                                    }
//                                });
//                    }
//                }).show();
//    }
//
//    private boolean deleteCache(CleanCacheBean bean, boolean isAll) {
//        boolean result = false;
//        if (isAll) {
//            result = cleanAll();
//        } else {
//
//            switch (bean.index) {
//                case 1://微农信聊天记录
////                    result = FileUtils.deleteFile(String.format(AppConstant.WNX_DB_PATH, MyInfoUtil.getMyMobile
////                            (BaseAppliction.mInstance)));
//                    isCleanWNXDB = true;
//                    result = WNXDBManager.getInstance().cleanWNXDB();
//                    break;
//                case 2://我的工作(待办事项)记录
//                    isScheduleDB = true;
//                    PreferencesUtils.SaveLongData(OfflineDataActivity.SCHEDULE_TIME, 0);//清空记录时间
//                    result = ScheduleDBManager.getInstance().cleanScheduleDb();
////                    result = ScheduleDBManager.getInstance().deleteDb();
//                    break;
//                case 3://离线表单记录
//                    result = FileUtils.deleteDir(AppConstant.OFFLINE_FORM);
//                    break;
//                case 4://离线数据记录
//                    result = deleteOfflineDB();
//                    break;
//                case 5://服务对象和字典离线
//                    result = FileUtils.deleteFile(AppConstant.BISHAN_DB_PATH);
//                    break;
//                case 6://春秋防疫数据离线
//                    result = FileUtils.deleteFile(AppConstant.CHUNQIU_DB_PATH);
//                    break;
//                case 7://生猪防疫数据离线
//                    result = FileUtils.deleteFile(AppConstant.SHENGZHU_DB_PATH);
//                    break;
//            }
//            if (result) {
//                bean.sizeDesc = "0B";
//            }
//            if (bean.index == 5 || bean.index == 6 || bean.index == 7) {
//                parentList.get(3).sizeDesc = getOfflineDataSize();
//            } else if (bean.index == 4) {
//                for (CleanCacheBean cleanCacheBean : childrenList.get(getString(R.string.clean_offline_data))) {
//                    cleanCacheBean.sizeDesc = "0B";
//                }
//            }
//        }
//        return result;
//    }
//
//    private boolean cleanAll() {
//        boolean result = FileUtils.deleteDir(AppConstant.APP_DIR);//删除项目文件夹
//        result &= FileUtils.deleteDir(AppConstant.OLD_APP_DIR);//删除旧文件夹
//        result &= CleanUtils.cleanInternalCache();//清空内部缓存
//        result &= deleteOfflineDB();//删除离线数据库
//        result &= WNXDBManager.getInstance().cleanWNXDB();//清空微农信数据库
//        result &= ScheduleDBManager.getInstance().cleanScheduleDb();//清空待办事项数据库
//        return result;
//    }
//
//    private boolean deleteOfflineDB() {
//        PreferencesUtils.SaveLongData(OfflineDataActivity.CHUNQIU_TIME, 0);//清空春秋防疫数据
//        return FileUtils.deleteFile(AppConstant.BISHAN_DB_PATH) &&
//                FileUtils.deleteFile(AppConstant.CHUNQIU_DB_PATH) &&
//                FileUtils.deleteFile(AppConstant.SHENGZHU_DB_PATH);
//    }
//}